package com.ruoyi.member.mapper;

import com.ruoyi.member.domain.MemberCollection;
import org.apache.ibatis.annotations.Param;
import java.util.List;

/**
 * 会员收藏Mapper接口
 *
 * @author ruoyi
 * @date 2025-01-22
 */
public interface CollectionMapper {
    /**
     * 查询会员收藏
     *
     * @param id 会员收藏主键
     * @return 会员收藏
     */
    public MemberCollection selectCollectionById(Long id);

    /**
     * 查询会员收藏列表
     *
     * @param collection 会员收藏
     * @return 会员收藏集合
     */
    public List<MemberCollection> selectCollectionList(MemberCollection collection);

    /**
     * 查询用户收藏列表
     *
     * @param userId 用户ID
     * @return 会员收藏集合
     */
    public List<MemberCollection> selectCollectionByUserId(Long userId);

    /**
     * 检查用户是否已收藏
     *
     * @param userId 用户ID
     * @param movieId 影视ID
     * @return 数量
     */
    public int checkCollected(@Param("userId") Long userId, @Param("movieId") Long movieId);

    /**
     * 检查会员是否已收藏
     *
     * @param memberId 会员ID
     * @param movieId 影视ID
     * @return 数量
     */
    public int checkCollectedByMemberId(@Param("memberId") Long memberId, @Param("movieId") Long movieId);

    /**
     * 新增会员收藏
     *
     * @param collection 会员收藏
     * @return 结果
     */
    public int insertCollection(MemberCollection collection);

    /**
     * 修改会员收藏
     *
     * @param collection 会员收藏
     * @return 结果
     */
    public int updateCollection(MemberCollection collection);

    /**
     * 删除会员收藏
     *
     * @param id 会员收藏主键
     * @return 结果
     */
    public int deleteCollectionById(Long id);

    /**
     * 批量删除会员收藏
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteCollectionByIds(Long[] ids);

    /**
     * 取消收藏
     *
     * @param memberId 会员ID
     * @param movieId 影视ID
     * @return 结果
     */
    public int cancelCollection(@Param("memberId") Long memberId, @Param("movieId") Long movieId);

    /**
     * 清空用户收藏
     *
     * @param userId 用户ID
     * @return 结果
     */
    public int clearUserCollection(Long userId);
}